iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0

在mapbox的地圖中,可以3D顯示地圖上的建築

fill-extrusion

fill-extrusion 層是 Mapbox 中的一個圖層類型,用於繪製 3D 建築物。它能夠根據地理數據的高度屬性將建築物以3D形式展示在地圖上。

建立 3D 建築物

在fill-extrusion層中,fill-extrusion-height和fill-extrusion-base用於控制建築物的高度和基底。這些屬性通常來自地理數據中的高度資訊。

例如:使用OpenStreetMap資料的height屬性來控制建築物的實際高度。可使用 interpolate 來根據縮放級別進行平滑過渡

'paint': {
    'fill-extrusion-height': [
        'interpolate', ['linear'], ['zoom'],
        15, 0, 
        15.05, ['get', 'height']
    ],
    'fill-extrusion-base': [
        'interpolate', ['linear'], ['zoom'],
        15, 0,
        15.05, ['get', 'min_height']
    ],
    'fill-extrusion-color': '#aaa',
    'fill-extrusion-opacity': 0.6
}

自定義顏色和不透明度:
可以使用 fill-extrusion-color 來定義建築物的顏色,並用 fill-extrusion-opacity 來控制透明度。這使得不同建築物的外觀更具可視化效果。

設置 3D 地形圖

Mapbox 支援通過數字高程模型(DEM,Digital Elevation Model)來渲染地形的高度差。這樣,你可以在地圖上顯示山脈、丘陵等地形的 3D 效果。

map.addSource('mapbox-dem', {
    'type': 'raster-dem',
    'url': 'mapbox://mapbox.terrain-rgb',
    'tileSize': 512,
    'maxzoom': 14
});
map.setTerrain({ 'source': 'mapbox-dem', 'exaggeration': 1.5 });

exaggeration

這個屬性允許你控制地形的高度比例,可以用來強調地形高差。例如,可以將 exaggeration 設為 1.5 以放大地形的高差,使其更加明顯。
陰影效果: 你可以通過添加 hillshade 層來為地形添加陰影,增強立體感:

map.addLayer({
    'id': 'hillshading',
    'source': 'mapbox-dem',
    'type': 'hillshade',
    'paint': {
        'hillshade-exaggeration': 0.5
    }
});

上一篇
Day17:Symbol Layer and Circle Layer
下一篇
Day19:Leaflet 路徑規劃
系列文
深入前端地圖框架技術探索30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言